home *** CD-ROM | disk | FTP | other *** search
/ Practical Internet Web Designer 86 / PIWD86.iso / pc / contents / dreamweaver / software / dwmx2004.exe / Disk1 / data1.cab / Configuration_En / Commands / Menu Properties.js < prev    next >
Encoding:
JavaScript  |  2003-09-05  |  8.3 KB  |  300 lines

  1.  
  2. // Copyright 2000, 2001, 2002, 2003 Macromedia, Inc. All rights reserved. 
  3.  
  4.  
  5. //************************GLOBALS**************************
  6.  
  7. var helpDoc = MM.HELP_soFormFieldProps;
  8.  
  9. var EMPTY_LIST = new Array();
  10. var GRID_MENU;
  11. var LAYER_MANUAL;
  12. var LAYER_DATABASE;
  13. var TF_MENU_TEXT;
  14. var TF_MENU_VALUE;
  15. var TF_DEFAULT_MANUAL;
  16. var MENU_RECORDSET;
  17. var MENU_TEXT;
  18. var MENU_VALUES;
  19. var TF_DEFAULT_DATABASE;
  20. var RADIO_MENU_TYPE;
  21.  
  22.  
  23. //********************API FUNCTIONS**************************
  24.  
  25. function commandButtons(){
  26.  
  27.    return new Array(MM.BTN_OK,    "okClicked()",
  28.                     MM.BTN_Cancel,"cancelClicked()",
  29.                     MM.BTN_Help, "displayHelp()"); 
  30. }
  31.  
  32. //--------------------------------------------------------------------
  33. // FUNCTION:
  34. //   displayHelp
  35. //
  36. // DESCRIPTION:
  37. //   This function is called when the user clicks the HELP button
  38. //
  39. // ARGUMENTS:
  40. //   none
  41. //
  42. // RETURNS:
  43. //   nothing
  44. //--------------------------------------------------------------------
  45.  
  46. function displayHelp()
  47. {
  48.   dwscripts.displayDWHelp(helpDoc);
  49. }
  50.  
  51.  
  52. //******************LOCAL FUNCTIONS**************************
  53.  
  54. function okClicked(){
  55.   if (LAYER_MANUAL.visibility == "visible"){ // static menu object created
  56.     var allRows = GRID_MENU.list, nRows = allRows.length, currRowText, dividerInd;
  57.   var textArr = new Array(),valArr = new Array();
  58.  
  59.   for (i=0;i<nRows;i++){
  60.     currRowText = allRows[i];
  61.     dividerInd = currRowText.indexOf("|");
  62.     textArr.push(currRowText.substring(0,dividerInd));
  63.     valArr.push(currRowText.substring(dividerInd +1));
  64.   }
  65.  
  66.   MM.commandReturnValue = new eoMenu(textArr,valArr,TF_DEFAULT_MANUAL.value);
  67.   } else { // dynamic menu object created
  68.  
  69.     dynMenuObj = new eoDynamicMenu();
  70.     dynMenuObj.recordset = MENU_RECORDSET.getValue();
  71.     dynMenuObj.textCol = MENU_TEXT.getValue();
  72.     dynMenuObj.valCol = MENU_VALUES.getValue();
  73.     dynMenuObj.defaultSelected = TF_DEFAULT_DATABASE.value;
  74.  
  75.   MM.commandReturnValue = dynMenuObj;
  76.   }
  77.   
  78.   clearUI();
  79.   window.close();
  80. }
  81.  
  82.  
  83. function clearUI(){
  84.   GRID_MENU.setAllRows(new Array(),new Array());
  85.   TF_MENU_TEXT.value = "";
  86.   TF_MENU_VALUE.value = "";
  87.   TF_DEFAULT_MANUAL.value = ""; 
  88.   TF_DEFAULT_DATABASE.value = "";
  89.   
  90.   LAYER_MANUAL.visibility="hidden";
  91.   LAYER_DATABASE.visibility="hidden";
  92.   MENU_RECORDSET.setIndex(0);
  93.   MENU_TEXT.setIndex(0);
  94.   MENU_VALUES.setIndex(0);
  95. }
  96.  
  97. function cancelClicked(){
  98.   MM.commandReturnValue = "";
  99.   clearUI();
  100.   window.close();
  101. }
  102.  
  103.  
  104. function initializeUI(){
  105.  
  106.   LAYER_MANUAL   = document.layers["manualLayer"];
  107.   LAYER_DATABASE = document.layers["databaseLayer"];
  108.   
  109.   RADIO_MENU_TYPE = new RadioGroup("Populate");
  110.   GRID_MENU = new GridWithNavControls("MenuGrid",LAYER_MANUAL,true);
  111.   GRID_MENU.setColumnNames(MM.LABEL_MenuGrid);
  112.  
  113.   TF_MENU_TEXT = findObject("MenuText",LAYER_MANUAL);
  114.   TF_MENU_VALUE = findObject("MenuValue",LAYER_MANUAL);
  115.   TF_DEFAULT_MANUAL = findObject("DefaultValueManual",LAYER_MANUAL);
  116.   MENU_RECORDSET = new ListControl("Recordset",LAYER_DATABASE);
  117.   MENU_TEXT = new ListControl("GetMenuText",LAYER_DATABASE);
  118.   MENU_VALUES = new ListControl("GetMenuValues",LAYER_DATABASE);
  119.   TF_DEFAULT_DATABASE = findObject("DefaultValueDatabase",LAYER_DATABASE);
  120.  
  121.   var menuInfoObj = MM.commandArgument;
  122.   if (menuInfoObj.type == "menu" ){ // if a static menu
  123.     initManualLayer();
  124.     showDifferentLayer("manual");
  125.     RADIO_MENU_TYPE.setSelectedIndex(0);
  126.     if (menuInfoObj.textArr != "" || menuInfoObj.defaultSelected != ""){ // if there are prior values
  127.       var nOptions = menuInfoObj.textArr.length,i;
  128.       var gridDisplayArr = new Array();
  129.       var textArr = menuInfoObj.textArr;
  130.       var valArr  = menuInfoObj.valArr;
  131.       for (i=0;i<nOptions;i++){
  132.         gridDisplayArr[i] = textArr[i] + "|";
  133.         if (valArr[i])
  134.           gridDisplayArr[i] += valArr[i];
  135.       }
  136.     
  137.       if (gridDisplayArr.length && gridDisplayArr.length > 0) {
  138.         GRID_MENU.setAllRows(gridDisplayArr);
  139.         GRID_MENU.setRowIndex(0);
  140.         displayGridValues();
  141.       }
  142.         
  143.       TF_MENU_TEXT.focus();
  144.       if (TF_MENU_TEXT.value != "")
  145.         TF_MENU_TEXT.select();
  146.       TF_DEFAULT_MANUAL.value = menuInfoObj.defaultSelected;
  147.    }
  148.   } else { // if a dynamic menu
  149.     RADIO_MENU_TYPE.setSelectedIndex(1);
  150.     initDatabaseLayer();
  151.     showDifferentLayer('database');
  152.     if (menuInfoObj.recordset){ // if there are prior values
  153.       MENU_RECORDSET.pickValue(menuInfoObj.recordset);
  154.       updateColumns();
  155.       MENU_TEXT.pickValue(menuInfoObj.textCol);
  156.       MENU_VALUES.pickValue(menuInfoObj.valCol);
  157.       TF_DEFAULT_DATABASE.value = menuInfoObj.defaultSelected;
  158.     }
  159.   }
  160.  
  161.  
  162. }
  163.  
  164. function initDatabaseLayer(){
  165.   var rsNames = dwscripts.getRecordsetNames(), colNames;
  166.   MENU_RECORDSET.setAll(rsNames,rsNames);
  167.   updateColumns();
  168.   TF_DEFAULT_DATABASE.value = "";
  169.   if (TF_DEFAULT_MANUAL.value != ""){
  170.     TF_DEFAULT_DATABASE.value = TF_DEFAULT_MANUAL.value;
  171.   }
  172. }
  173.  
  174.  
  175.  
  176. function addNewRow(){
  177.   GRID_MENU.addRow(MM.LABEL_menuPropLabelPrefix + "|");
  178.   displayGridValues();
  179.   var newLabel = getUniqueLabel(MM.LABEL_menuPropLabelPrefix);
  180.   TF_MENU_TEXT.value = newLabel;
  181.   updateGridRow();
  182.   TF_MENU_TEXT.focus();
  183.   TF_MENU_TEXT.select();
  184. }
  185.  
  186. function initManualLayer(){
  187.   if (GRID_MENU.list.length == 0){
  188.     TF_DEFAULT_MANUAL.value = "";
  189.     addNewRow();
  190.     GRID_MENU.setRowIndex(0);
  191.   } else {
  192.     if (GRID_MENU.list.length == 1 && GRID_MENU.getRow() == "|"){
  193.       GRID_MENU.setRow(" |");
  194.       GRID_MENU.setRowIndex(0);
  195.     }
  196.     TF_MENU_TEXT.focus();
  197.     TF_MENU_TEXT.select();
  198.   }
  199.   
  200.   if (TF_DEFAULT_DATABASE.value !=""){
  201.     TF_DEFAULT_MANUAL.value = TF_DEFAULT_DATABASE.value;
  202.   }
  203. }
  204.  
  205.  
  206. function showDifferentLayer(whichOne){
  207.   if (whichOne == 'database'){
  208.     if (dwscripts.getRecordsetNames().length == 0){
  209.       alert (dwscripts.sprintf(MM.MSG_NeedRecordsetForOption, dwscripts.getRecordsetDisplayName()));
  210.       document.forms[0].Populate[0].checked = true;
  211.       document.forms[0].Populate[1].checked = false;
  212.       return;
  213.     }
  214.     LAYER_MANUAL.visibility   = "hidden";
  215.     LAYER_DATABASE.visibility = "visible";
  216.    initDatabaseLayer();
  217.   } else {
  218.    LAYER_DATABASE.visibility = "hidden";
  219.    LAYER_MANUAL.visibility   = "visible";
  220.    initManualLayer();
  221.   }
  222.  
  223. }
  224.  
  225. function updateGridRow(){
  226.    GRID_MENU.setRow(TF_MENU_TEXT.value + "|" + TF_MENU_VALUE.value);
  227. }
  228.  
  229. function displayGridValues(){
  230.    var currRow = GRID_MENU.getRow();
  231.    var dividerIndex = currRow.indexOf("|");
  232.    TF_MENU_TEXT.value = currRow.substring( 0,dividerIndex);
  233.    TF_MENU_VALUE.value = currRow.substring(dividerIndex+1);
  234. }
  235.  
  236.  
  237.  
  238.  
  239. // function: displayDynamicDataDialog
  240. // description: pops up the dialog allowing the user to choose dynamic data
  241. function displayDynamicDataDialog(textFieldObj){
  242.   var serverModel = dw.getDocumentDOM().serverModel.getServerName();
  243.   var expression = dw.showDynamicDataDialog(textFieldObj.value);
  244.   
  245.    if (expression) {
  246.      if (serverModel == "Cold Fusion") {
  247.        expression = stripCFOutput(expression);
  248.      }
  249.      textFieldObj.value = expression;
  250.    }
  251. }
  252.  
  253.  
  254. function updateColumns(){
  255.   colNames = dwscripts.getFieldNames(MENU_RECORDSET.getValue());
  256.   
  257.     if (colNames && colNames.length > 0) {
  258.       MENU_TEXT.setAll(colNames, colNames);
  259.       MENU_TEXT.setIndex(0);
  260.     } else {
  261.       MENU_TEXT.setAll(new Array(MM.LABEL_NoColumns), EMPTY_LIST);
  262.     }
  263.       
  264.     if (colNames && colNames.length > 0) {
  265.       MENU_VALUES.setAll(colNames, colNames);
  266.       MENU_VALUES.setIndex(0);
  267.     } else {
  268.       MENU_VALUES.setAll(new Array(MM.LABEL_NoColumns), EMPTY_LIST);
  269.     }
  270. }
  271.  
  272.  
  273. function getUniqueLabel() {
  274.   var label, i, num=1, isUnique;
  275.  
  276.   for (isUnique=false; !isUnique; num++) {
  277.     label = TEXT_defaultItemText + num;
  278.     isUnique = true;
  279.     for (i=0; i<GarrMenuOptions.length && isUnique; i++)
  280.       if (GarrMenuOptions[i][0] == label) isUnique=false;
  281.   }
  282.   return label;
  283. }
  284.  
  285.  
  286. function getUniqueLabel(baseName) {
  287.   var label, i, num=1, isUnique,rowText,menuLabel;
  288.  
  289.   for (isUnique=false; !isUnique; num++) {
  290.     label = baseName + num; 
  291.     isUnique = true;
  292.     for (i=0; i<GRID_MENU.list.length && isUnique; i++) {
  293.       rowText = GRID_MENU.list[i]; 
  294.       menuLabel = rowText.substring(0,rowText.indexOf("|"));
  295.       if (menuLabel == label) isUnique=false;
  296.     }
  297.   }
  298.   return label;
  299. }
  300.